package dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;
import java.util.List;

import conexion.BBDD;
import dao.interfaces.IAnuncioDAO;
import dao.interfaces.IConstructoraDAO;
import dao.interfaces.IVpoDAO;
import dto.AnuncioDTO;

public class AnuncioDAO implements IAnuncioDAO{

	public List<AnuncioDTO> selectAll() throws SQLException {
		List<AnuncioDTO> resultado = new LinkedList<AnuncioDTO>();
		Connection c = BBDD.abrirConexion();
		String sql = "SELECT * FROM anuncio ORDER BY fecha_publicacion DESC;";
		PreparedStatement pr = c.prepareStatement(sql);
		ResultSet rs = pr.executeQuery();
		while(rs.next()){
			AnuncioDTO anuncioDto = new AnuncioDTO();
			anuncioDto.setPid(rs.getInt("pid"));
			anuncioDto.setTitulo(rs.getString("titulo"));
			anuncioDto.setDescripcion(rs.getString("descripcion"));
			anuncioDto.setFechaPublicacion(rs.getDate("fecha_publicacion"));
			anuncioDto.setFechaCaducidad(rs.getDate("fecha_caducidad"));
			resultado.add(anuncioDto);
		}
		BBDD.cerrarConexion(c);
		return resultado;
	}
	
	public AnuncioDTO obtenerAnuncioById(int indice) throws SQLException{
		
		AnuncioDTO anuncioDto = new AnuncioDTO();
		Connection c = BBDD.abrirConexion();
		String sql = "SELECT * FROM anuncio WHERE id=" + indice + ";";
		PreparedStatement pr = c.prepareStatement(sql);
		ResultSet rs = pr.executeQuery();
		if(rs.next()){
			anuncioDto.setPid(rs.getInt("pid"));
			anuncioDto.setTitulo(rs.getString("titulo"));
			anuncioDto.setDescripcion(rs.getString("descripcion"));
			anuncioDto.setFechaPublicacion(rs.getDate("fecha_publicacion"));
			anuncioDto.setFechaCaducidad(rs.getDate("fecha_caducidad"));
			int idConst = rs.getInt("constructora");
			IConstructoraDAO constructoraDao = new ConstructoraDAO();
			anuncioDto.setConstructora(constructoraDao.obtenerConstructoraById(idConst));
			int idVPO = rs.getInt("vpo");
			IVpoDAO vpoDao = new VpoDAO();
			anuncioDto.setVpo(vpoDao.obtenerVpo(idVPO));
		}
		BBDD.cerrarConexion(c);
		return anuncioDto;
		
	}
}
